package com.fs.web.base.utils;

import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

import java.util.Map;

/**
 * @author ACE
 * @desc 字符串工具类
 * @creationTime 2019-04-18 08:48
 * @projectName weixinframe
 * @packageName com.fs.web.base.utils
 */
public class StringToolUtils {
    /**
     * map取值工具类，防止NullPointerException
     * 返回String类型的值
     */
    public static String MapGetString(String name, Map map){
        if(StringUtils.isBlank(name) || CollectionUtils.isEmpty(map)){
            return "";
        }else{
            return map.get(name) == null ? "" : map.get(name).toString();
        }
    }

    /**
     * 系统取值工具类，直接使用ApplicationUtils.getRequestDatas()里面取值
     * map取值工具类，防止NullPointerException
     * 返回String类型的值
     */
    public static String SystemGetString(String name){
        Map<String, Object> map = ApplicationUtils.getRequestDatas();
        return MapGetString(name,map);
    }

    /***
     * 下划线命名转为驼峰命名
     *
     * @param para
     *        下划线命名的字符串
     */
    public static String UnderlineToHump(String para){
        StringBuilder result=new StringBuilder();
        String a[]=para.split("_");
        for(String s:a){
            if(result.length()==0){
                result.append(s.toLowerCase());
            }else{
                result.append(s.substring(0, 1).toUpperCase());
                result.append(s.substring(1).toLowerCase());
            }
        }
        return result.toString();
    }

    /***
     * 驼峰命名转为下划线命名
     *
     * @param para
     *        驼峰命名的字符串
     */
    public static String HumpToUnderline(String para){
        StringBuilder sb=new StringBuilder(para);
        int temp=0;//偏移量，第i个下划线的位置是 当前的位置+ 偏移量（i-1）,第一个下划线偏移量是0
        for(int i=0;i<para.length();i++){
            if(Character.isUpperCase(para.charAt(i))){
                sb.insert(i+temp, "_");
                temp+=1;
            }
        }
        return sb.toString().toLowerCase();
    }
}
